/**
 * 
 */
package fr.sportcom.sportcom.adapter;

import java.util.ArrayList;
import fr.sportcom.sportcom.R;
import fr.sportcom.sportcom.model.Comment;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

/**
 * @author NeoXy
 *
 */
public class ComListAdapter extends BaseAdapter {

	private ArrayList<Comment> list; //la liste à afficher par l'adapter THIS
	private LayoutInflater layoutInflater;


	public ComListAdapter(Context c, ArrayList<Comment> l) {
		layoutInflater = LayoutInflater.from(c); //on charge le bon fichier XML (c'est le but du LayoutInflater)
		list = l;
	}

	@Override
	public int getCount() {
		return list.size();
	}

	@Override
	public Object getItem(int pos) {
		return list.get(pos);
	}

	@Override
	public long getItemId(int pos) {
		return list.get(pos).getId();
	}

	@Override
	public View getView(int pos, View convertView, ViewGroup parent) {
		ViewHolder viewHolder = null;
		if(convertView == null)  { // si aucune vue n'est encore créée:
			convertView = layoutInflater.inflate(R.layout.itemcom, null); //On récupére la config XML pour la liste

			//On crée le viewHolder, et on le rempli avec les bons TextView
			viewHolder = new ViewHolder();
			viewHolder.id = (TextView)convertView.findViewById(R.id.comId);
			viewHolder.author = (TextView)convertView.findViewById(R.id.author);
			viewHolder.publish = (TextView)convertView.findViewById(R.id.publish);
			viewHolder.content = (TextView)convertView.findViewById(R.id.content);

			/*Ensuite on tag le convertView, 
			pour signifier qu'on à bien créé le viewHolder (utile quand on rappelle cette méthode)
			 */
			convertView.setTag(viewHolder);
		}
		else {
			viewHolder = (ViewHolder) convertView.getTag();
		}

		//Ensuite on remplit simplement la vue ConvertView :
		Comment comment = list.get(pos);
		viewHolder.id.setText("" + comment.getId());
		viewHolder.author.setText(comment.getUser());
		viewHolder.publish.setText(comment.getStrDate());
		viewHolder.content.setText(comment.getContent());

		if(pos%2 == 0) {
			convertView.setBackgroundResource(R.color.comBack1);
		}
		else {
			convertView.setBackgroundResource(R.color.comBack2);
		}

		return convertView; //On retourne la vue qu'on a changé!
	}

	/**
	 * Cette classe sert à am�liorer la vitesse de chargement
	 * En effet, sans cette classe, la liste est r�initialis� 
	 * � chaque fois qu'on demande la mise-�-jour graphique de la liste
	 * Alors qu'avec cette classe on fait:
	 * 		Si la classe n'est pas encore instanci�
	 * 			Construction d'une instance; envoi de l'instance
	 *		Sinon
	 *			Envoi de l'instance
	 */
	private class ViewHolder {
		//On place les diff�rents TextView qui composent chaque �l�ment de la liste
		private TextView id;
		private TextView author;
		private TextView publish;
		private TextView content;

		public ViewHolder() {}
	}

}
